package com.xudu.tourbackend.controller;


import com.xudu.tourbackend.entity.Element;
import com.xudu.tourbackend.entity.request.UpdateRecommendRequest;
import com.xudu.tourbackend.entity.vo.RouteVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author xudu
 * @since 2024-06-24
 */
@RequestMapping("/Recommend-route")
public interface RecommendController {

    /**
     * 获取推荐路线的方法。
     * 通过GET请求访问该方法，不接受任何参数。
     * 返回推荐路线信息的列表。
     */
    @GetMapping("/getRecommendRoute")
    List<RouteVo> getRecommendRoute();

    /**
     * 更新推荐路线的方法。
     * 通过POST请求访问该方法，接受UpdateRecommendRequest对象和HttpServletRequest对象作为参数。
     * 返回更新后的推荐路线的列表。
     *
     * @param updateRecommendRequest 包含更新推荐路线所需信息的请求体
     * @param request                 HTTP请求对象
     * @return 更新后的推荐路线列表
     */
    @PostMapping("/updateRecommendRoute")
    List<RouteVo> updateRecommendRoute(UpdateRecommendRequest updateRecommendRequest, HttpServletRequest request);

    /**
     * 获取推荐元素的方法。
     * 通过GET请求访问该方法，不接受任何参数。
     * 返回推荐元素的列表。
     */
    @GetMapping("/getRecommendElement")
    List<Element> getRecommendElement();

    /**
     * 更新推荐元素的方法。
     * 通过POST请求访问该方法，接受UpdateRecommendRequest对象和HttpServletRequest对象作为参数。
     * 返回更新后的推荐元素的列表。
     *
     * @param updateRecommendRequest 包含更新推荐元素所需信息的请求体
     * @param request                 HTTP请求对象
     * @return 更新后的推荐元素信息列表
     */
    @PostMapping("/updateRecommendElement")
    List<Element> updateRecommendElement(UpdateRecommendRequest updateRecommendRequest, HttpServletRequest request);



}
